/**
 *@desc
 * # tickets
 * 天猫超市茅台抢票功能
 * # 抢票方法
 * 1.为了方便和简化抢票业务逻辑，提高代码的效率，本抢票软件只负责提交抢票和发起付款请求。
 * 2.通过手机端将天猫超市端的茅台加入购物车，然后执行下面的操作
 * # 打开页面
 * https://cart.tmall.com/cart.htm
 * # Chrome浏览器加载插件运行
 * 插件自动运行后，时间到了后，看看是否订单里面有付款项，有的话就说抢票成功，没有则是没中。
 *
 *@author song da gao
 *@time 2021/1/5 15:08
 */
//检测状态
function checkElementState(path, callback) {
    let ele = document.querySelector(path);
    if (ele) {
        callback && callback();
    } else {
        console.log('检测状态：异步加载元素中....' + path);
        setTimeout(function () {
            checkElementState(path, callback);
        }, 200);
    }
}


//点击购买按钮
function clickBuy() {

    console.log('买！');

    //票的数量  如果还不可以购买，这个地方获取会失败
    let amount = document.getElementsByClassName('mui-amount-increase')[0];
    amount && amount.click();  //+1
    let btnBuy = document.querySelector('');
}


//结算
function checkOut() {
    console.log('结算开始....');
    let btn = document.getElementById('J_Go');
    if (btn) {
        btn.click();
    } else {
        console.log('结算按钮没找到');
    }
}

function checkOutAsync() {
    checkElementState('#J_Go', checkOut);
}

//提交订单
function submitOrder() {
    console.log('提交订单开始....');
    checkElementState('.go-btn', function () {
        let btn = document.querySelector(".go-btn");
        if (btn) {
            btn.click();
        } else {
            console.log('提交订单按钮没找到');
        }

    });
}


// 抢购目标的时间
let dDate = new Date();  //10点和20点开抢
if (dDate.getHours() < 10) {
    dDate.setHours(9, 59, 59.2);
} else {
    dDate.setHours(19, 59, 59.2);
}

//进入时间判断循环
function enterTimeCheckLoop(callback) {
    let now = new Date();
    let diff = Date.parse(dDate) - Date.parse(now);
    console.log('与目标抢购时间的差距（单位:ms）' + diff);
    if (diff < -900) {
        console.log('时间过了！');
    } else if (diff < 500) {
        callback && callback();
        console.log('时间到了！！！');
    } else {
        // 还没到设置的抢购时间，定时器虚幻执行函数
        setTimeout(function () {
            enterTimeCheckLoop(callback);
        }, 400);
        // console.log('还没到设置的抢购时间啦！！！');
    }

}


//主要函数
function main() {
    console.log('############################开始抢购茅台############################');
    let href = window.location.href;
    if (href.indexOf('cart.tmall.com') > -1) {
        //结算页面
        //进入时间判断
        enterTimeCheckLoop(checkOutAsync);
    } else if (href.indexOf('buy.tmall.com') > -1) {
        //提交订单页面
        submitOrder();
    }
}


main();